package com.powernode.component;

import com.powernode.constant.RedisConstant;
import com.powernode.service.AppUserGroupService;
import com.powernode.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/*
@Slf4j
@Component
public class InitResourceRoleRunner implements ApplicationRunner {
    @Autowired
    private AppUserGroupService service;
    @Autowired
    private RedisUtil redisUtil;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("初始化权限-资源关系到redis数据库...");
        // 创建一个map用于存放数据
        Map<String,Object> map = new HashMap<>();
        // 先删除redis中的数据
        redisUtil.del(RedisConstant.KEY_AUTH_GROUP_RESOURCE);
        // 遍历用户组
        service.list().forEach(group -> {
            // 遍历每个组中的资源列表
            group.getResources().forEach( uri -> {
                // 根据map中的key，即资源地址获取对应权限集合
                Set<String> set = (HashSet<String>) map.get(uri);
                if (set == null) {
                    set = new HashSet<>();
                }
                // 向权限集合中添加当前遍历的资源
                set.add(group.getGroupName());
                map.put(uri,set);
            });
        });
        // 添加权限-资源对应关系到redis库中
        redisUtil.hmset(RedisConstant.KEY_AUTH_GROUP_RESOURCE,map);
    }
}
*/
